package cn.lg.soar.message.api.service;

import cn.lg.soar.common.util.data.RandomUtil;
import cn.lg.soar.message.api.model.MailDTO;

import java.time.Duration;

/**
 * @author luguoxiang
 * @date 2022/4/5
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface IMailApi {

    void send(MailDTO mail);

    /**
     * 发送验证码
     * @param email 邮箱
     * @param subject 主题
     * @param captcha 验证码
     * @param expire 有效期
     */
    void sendCaptcha(String email, String subject, Duration expire, String captcha);

    /**
     * 发送验证码
     * @param email 邮箱
     * @param subject 主题
     * @param expire 有效期
     */
    default void sendCaptcha(String email, String subject, Duration expire) {
        sendCaptcha(email, subject, expire, RandomUtil.getString(6, "0123456789"));
    }

    /**
     * 检查验证码
     * @param email 邮箱
     * @param captcha 验证码
     * @param remove 是否删除缓存验证码
     * @return
     */
    boolean checkCaptcha(String email, String captcha, Boolean delete);

    /**
     * 检查验证码(并删除)
     * @param email 邮箱
     * @param captcha 验证码
     * @return
     */
    default boolean checkCaptcha(String email, String captcha) {
        return checkCaptcha(email, captcha, true);
    }

}
